package es.unileon.aic.floatingpointalu.userInterface;

import java.awt.*;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

/**
 * Clase que modela un panel sobre el que se pueden dibujar l&iacute;neas
 * @author Abel Mayorga Gonz&aacute;lez
 * @author Beatriz Justel Garc&iacute;a
 * @version 1.0
 *
 */

public class PanelLines extends JPanel {
	
	/**
	 * Clase interna que modela una l&iacute;nea
	 * @author Abel Mayorga Gonz&aacute;lez
	 * @author Beatriz Justel Garc&iacute;a
	 * @version 1.0
	 *
	 */
	class Line{
		
		/** Puntos inicial y final de la l&iacute;nea **/
		private Point _p1, _p2;
		
		Line(Point p1, Point p2){
			_p1 = p1;
			_p2 = p2;
		}
		
		/**
		 * 
		 * @return Devuelve la abscisa del punto inicial de la l&iacute;nea
		 */
		int getP1X(){
			return (int)_p1.getX();
		}
		
		/**
		 * 
		 * @return Dvuelve la ordenada del punto inicial de la l&iacute;nea
		 */
		int getP1Y(){
			return (int)_p1.getY();
		}
		
		/**
		 * 
		 * @return Devuelve la abscisa del punto final de la l&iacute;nea
		 */
		int getP2X(){
			return (int)_p2.getX();
		}
		
		/**
		 * 
		 * @return Devuelve la ordenada del punto final de la l&iacute;nea
		 */
		int getP2Y(){
			return (int)_p2.getY();
		}
	}
	
	/** Lista de lineas que dibuja el panel **/
	List<Line> _lines;
	
	/**
	 * Constructor
	 */
	public PanelLines(){
		super();
		_lines = new ArrayList<Line>();
	}
	
	/**
	 * A&ntilde;ade una l&iacute;nea al panel
	 * @param p1 Punto inicial de la l&iacute;nea
	 * @param p2 Punto final de la l&iacute;nea
	 */
	public void addLine(Point p1, Point p2){
		_lines.add(new Line(p1,p2));
	}
	
	@Override
	public void paintComponent(Graphics g){
		super.paintComponent(g);
		Graphics2D g2 = (Graphics2D)g;
		g2.setStroke(new BasicStroke(3.0f));
		Color colorLineas = new Color(0xC0504D);
		g2.setColor(colorLineas);
		
		for(Line l : _lines){
			g2.drawLine(l.getP1X(), l.getP1Y(), l.getP2X(), l.getP2Y());
		}
	}

}
